***********************************************************************************
* (1) Run all models using detailed growth adjective definitions
* (2) Run all models using discretized short-term change
* (3) Run upward mobility analyses using $1,000 change in occupational earnings. 
* (4) Prepare a descriptive table to show the distributions of upward mobility, 
*     immobility, and downward mobility 
* (5) Short-term and long-term occupational growth correlations
* 
* last modified 7/22/2025
***********************************************************************************

capture log close 
clear
set more off

***************
* Directories *
***************

cd "/Users/"

global dofile			=	"./Code/NEW-OEWS"
global matrix_data		=   "./Data/National Employment Matrix"
global oews_data		= 	"./Data/OEWS/all_excel"
global onet_data		= 	"./OccLink/ONET/ONET data/merged"
global cps_data			= 	"./Data/CPS/IPUMS/00015"
global xwalk 			=	"./Data/Crosswalk"
global results 			=	"./Results"
global temp				= 	"./Temp"
global logfile          =   "./Results/"



log using "${logfile}/TableF1.log", replace

*****************************************************************
* Table F1 Logistic Model with Alternative Independent Variables *
*****************************************************************

use "${temp}/cps_2000-2020_wide.dta", replace

* Define who moves

gen move = (occ_t0 != occ_t1)

drop if emp_pc_growth_t0 > 400 /* drop outliers about 1.4% dropped*/

mark good if outlook_t0 != .  & outlook_t1 != . 

* Define the discrete short-term growth variable

recode emp_pc_growth_t0 (-100/-10=3) (-10/10=2) (10/1000 =1) (else=.), gen(emp_pc_growth_gr_t0)
tab emp_pc_growth_gr_t0 if good == 1

* m1: individual variables + discrete 2-year employment change

logit move ib2.emp_pc_growth_gr_t0 /*
*/ i.male ib2.age_gr ib1.race i.hispanic ib1.edu_gr i.year /*
*/ if good == 1  


* m3: individual variables + projected OOH detailed outlook categories

/* 1 refers to growing much faster than average, */
/* 3 refers to grow as fast as average, and 8 refers to decline rapidly */

logit move ib5.outlook_t0  /*
*/ i.male ib2.age_gr ib1.race i.hispanic ib1.edu_gr i.year /*
*/ if good == 1  

log close


log using "${logfile}/TableF2.log", replace


*************************************************************************
* Table F2 Discrete Choice Models With Alternative Independent Variables *
*************************************************************************

use "${temp}/cps_2000-2020_choice_set_movers.dta", replace

* Generate choice variable

gen dest = (choice_occ == occ_t1)

* Generate size constraint variable

gen logemp_choice = log(empsize_choice)

* Define the discrete short-term growth variables

recode emp_pc_growth_choice (-100/-10=3) (-10/10=2) (10/1000 =1) (else=.), gen(emp_gr_choice)
recode emp_pc_growth_t0 (-100/-10=3) (-10/10=2) (10/1000 =1) (else=.), gen(emp_gr_t0)

drop if emp_pc_growth_choice > 400 /* drop outliers*/

* Mark the analytical sample

mark good if emp_chng_rate_choice !=. & proj_pc_growth_choice !=. & outlook_choice != . & outlook_gr_t0 != .


* m1: individual variables + 2-year employment change

clogit dest ib2.emp_gr_choice                                 /*
*/	i.male##ib2.emp_gr_choice                                 /*
*/	ib2.age_gr##ib2.emp_gr_choice                             /*
*/	ib1.race##ib2.emp_gr_choice                               /*
*/	i.hispanic##ib2.emp_gr_choice                             /*
*/	ib1.edu_gr##ib2.emp_gr_choice                             /*
*/  ib1.year##ib2.emp_gr_choice                               /*
*/  if good == 1, group(personid) offset(logemp_choice) 


clogit dest ib2.emp_gr_choice                                 /*
*/  ib2.emp_gr_t0##ib2.emp_gr_choice                          /*
*/	i.male##ib2.emp_gr_choice                                 /*
*/	ib2.age_gr##ib2.emp_gr_choice                             /*
*/	ib1.race##ib2.emp_gr_choice                               /*
*/	i.hispanic##ib2.emp_gr_choice                             /*
*/	ib1.edu_gr##ib2.emp_gr_choice                             /*
*/  ib1.year##ib2.emp_gr_choice                               /*
*/  if good == 1, group(personid) offset(logemp_choice) 



* m3: individual variables + projected OOH outlook categories

clogit dest ib4.outlook_choice                                 /*
*/	i.male##ib4.outlook_choice                                 /*
*/	ib2.age_gr##ib4.outlook_choice                             /*
*/	ib1.race##ib4.outlook_choice                               /*
*/	i.hispanic##ib4.outlook_choice                             /*
*/	ib1.edu_gr##ib4.outlook_choice                             /*
*/  ib1.year##ib4.outlook_choice                               /*
*/  if good == 1, group(personid) offset(logemp_choice) 


clogit dest ib4.outlook_choice                                 /*
*/  ib4.outlook_t0##ib4.outlook_choice                         /*
*/	i.male##ib4.outlook_choice                                 /*
*/	ib2.age_gr##ib4.outlook_choice                             /*
*/	ib1.race##ib4.outlook_choice                               /*
*/	i.hispanic##ib4.outlook_choice                             /*
*/	ib1.edu_gr##ib4.outlook_choice                             /*
*/  ib1.year##ib4.outlook_choice                               /*
*/  if good == 1, group(personid) offset(logemp_choice) 


log close



log using "${logfile}/TableF3.log", replace


******************************************************************************************************
* Table F3 logit Model for Upward Mobility Using Alternative Independent Variables （5 percent change)*
******************************************************************************************************

use "${temp}/cps_2000-2020_wide_movers.dta", replace

* Define the mobility variable

gen xx = adj_annual_mean_t1/adj_annual_mean_t0

gen mobile = 1 if xx > 1.05 & !missing(adj_annual_mean_t0) & !missing(adj_annual_mean_t1) & occ_t0 != occ_t1 /*upward*/

replace mobile = 2 if inrange(xx, 0.95, 1.05) & !missing(adj_annual_mean_t0) & !missing(adj_annual_mean_t1) & occ_t0 != occ_t1 /*downward*/

replace mobile = 0 if xx < 0.95 & !missing(adj_annual_mean_t0) & !missing(adj_annual_mean_t1) & occ_t0 != occ_t1 /*horizontal mobility*/

lab def mobile 0 "downward" 1 "upward" 2 "horizontal" 
lab val mobile mobile

recode mobile (0=1 "downward") (1 2 = 0 "not downward"), gen(downward)
recode mobile (1=1 "upward") (0 2 = 0 "not upward"), gen(upward)


* Define discrete short-term growth variables

recode emp_pc_growth_t0 (-100/-10=3) (-10/10=2) (10/7000 =1) (else=.), gen(emp_pc_growth_gr_t0)
recode emp_pc_growth_t1 (-100/-10=3) (-10/10=2) (10/7000 =1) (else=.), gen(emp_pc_growth_gr_t1)

* Mark the analytical sample

mark good if emp_chng_rate_t0 !=. & emp_chng_rate_t1 != . & /* 
*/ proj_pc_growth_t0 != . & proj_pc_growth_t1 != . & /*
*/ outlook_gr_t0 != .  & outlook_gr_t1 != .  & /*
*/ adj_annual_mean_t0 != . 


* m1: individual variables + 2-year employment change

/* model 1a */
logit upward ib2.emp_pc_growth_gr_t0 ib2.emp_pc_growth_gr_t1 /*
*/ i.male ib2.age_gr ib1.race i.hispanic ib1.edu_gr i.year /*
*/ if good == 1  

/* model 1b */
logit upward ib2.emp_pc_growth_gr_t0##ib2.emp_pc_growth_gr_t1 /*
*/ i.male ib2.age_gr ib1.race i.hispanic ib1.edu_gr i.year /*
*/ if good == 1  


* m3: individual variables + projected OOH outlook categories

/* model 3a */
logit upward ib4.outlook_t0 ib4.outlook_t1            /*
*/	i.male ib2.age_gr ib1.race i.hispanic ib1.edu_gr ib1.year /* 
*/ if good == 1  

/* model 3b */
logit upward ib4.outlook_t0##ib4.outlook_t1           /*
*/	i.male ib2.age_gr ib1.race i.hispanic ib1.edu_gr ib1.year /* 
*/ if good == 1  

log close


log using "${logfile}/TableF5.log", replace

***********************************************************************************************
* Table 4 logit Model for Upward Mobility with Alternative Dependent Variables ($1000 Change) *
***********************************************************************************************

use "${temp}/cps_2000-2020_wide_movers.dta", replace

* define the mobility variable

gen mobile = 1 if adj_annual_mean_t1 > (adj_annual_mean_t0 + 1000) & !missing(adj_annual_mean_t0) & !missing(adj_annual_mean_t1) & occ_t0 != occ_t1 /*upward*/

replace mobile = 0 if adj_annual_mean_t1 <= (adj_annual_mean_t0 - 1000) & !missing(adj_annual_mean_t0) & !missing(adj_annual_mean_t1) & occ_t0 != occ_t1 /*downward*/

replace mobile = 2 if adj_annual_mean_t1 >= (adj_annual_mean_t0 - 1000) & adj_annual_mean_t1 <= (adj_annual_mean_t0 + 1000) & !missing(adj_annual_mean_t0) & !missing(adj_annual_mean_t1) & occ_t0 != occ_t1 /*horizontal mobility*/


lab def mobile 0 "downward" 1 "upward" 2 "horizontal" 
lab val mobile mobile

recode mobile (0=1 "downward") (1 2 = 0 "not downward"), gen(downward)
recode mobile (1=1 "upward") (0 2 = 0 "not upward"), gen(upward)


* rescale growth variables in terms of 10 percent change

gen emp_pc_growth10_t0 = emp_pc_growth_t0/10
gen emp_pc_growth10_t1 = emp_pc_growth_t1/10

gen proj_pc_growth10_t0 = proj_pc_growth_t0/10
gen proj_pc_growth10_t1 = proj_pc_growth_t1/10


* Mark the analytical sample

mark good if emp_chng_rate_t0 !=. & emp_chng_rate_t1 != . & /* 
*/ proj_pc_growth_t0 != . & proj_pc_growth_t1 != . & /*
*/ outlook_gr_t0 != .  & outlook_gr_t1 != .  & /*
*/ adj_annual_mean_t0 != . 


* m1: individual variables + 2-year employment change

gen lograte_t0 = log(1+emp_chng_rate_t0)
gen lograte_t1 = log(1+emp_chng_rate_t1)

/* model 1a */
logit upward emp_pc_growth10_t0 emp_pc_growth10_t1               /*
*/ i.male ib2.age_gr ib1.race i.hispanic ib1.edu_gr ib1.year /*
*/ if good == 1  

// /* model 1b */
// logit downward c.lograte_t0##c.lograte_t1                    /*
// */ i.male ib2.age_gr ib1.race i.hispanic ib1.edu_gr ib1.year /*
// */ if good == 1  


* m2: individual variables + 10-year projected growth

gen logprojrate_t0 = log(1+proj_pc_growth_t0/100)
gen logprojrate_t1 = log(1+proj_pc_growth_t1/100)

/* model 2a */
logit upward proj_pc_growth10_t0 proj_pc_growth10_t1             /*
*/ i.male ib2.age_gr ib1.race i.hispanic ib1.edu_gr ib1.year /*
*/ if good == 1   

// /* model 2b */
// logit downward c.logprojrate_t0##c.lograte_t1                    /*
// */ i.male ib2.age_gr ib1.race i.hispanic ib1.edu_gr ib1.year /*
// */ if good == 1   

* m3: individual variables + projected OOH outlook categories

/* model 3a */
logit upward ib2.outlook_gr_t0 ib2.outlook_gr_t1            /*
*/	i.male ib2.age_gr ib1.race i.hispanic ib1.edu_gr ib1.year /* 
*/ if good == 1  

/* model 3b */
logit upward ib2.outlook_gr_t0##ib2.outlook_gr_t1           /*
*/	i.male ib2.age_gr ib1.race i.hispanic ib1.edu_gr ib1.year /* 
*/ if good == 1  


log close


*******************************************************************************
* Upward mobility probability CI plot *
*******************************************************************************


/* model 3a */
logit upward ib2.outlook_gr_t0 ib2.outlook_gr_t1            /*
*/	i.male ib2.age_gr ib1.race i.hispanic ib1.edu_gr ib1.year /* 
*/ if good == 1  

/* obtain predicted probability and confidence interval*/
predict phat

predict xb, xb

predict error, stdp

generate lb = xb - invnormal(0.975) * error

generate ub = xb + invnormal(0.975) * error

generate plb = invlogit(lb)

generate pub = invlogit(ub)


/* origin = growing, all other var at the reference level */
sum phat plb pub if outlook_gr_t0 == 1 & outlook_gr_t1 == 2 & male == 1 & age_gr == 2 & race == 1 & hispanic == 0 & edu_gr == 2 & year == 2020

/* origin = stable, all other var at the reference level */
sum phat plb pub if outlook_gr_t0 == 2 & outlook_gr_t1 == 2 & male == 1 & age_gr == 2 & race == 1 & hispanic == 0 & edu_gr == 2 & year == 2020

/* origin = declining, all other var at the reference level */
sum phat plb pub if outlook_gr_t0 == 3 & outlook_gr_t1 == 2 & male == 1 & age_gr == 2 & race == 1 & hispanic == 0 & edu_gr == 2 & year == 2020

/* destination = growing, all other var at the reference level */
sum phat plb pub if outlook_gr_t0 == 2 & outlook_gr_t1 == 1 & male == 1 & age_gr == 2 & race == 1 & hispanic == 0 & edu_gr == 2 & year == 2020

/* destination = stable, all other var at the reference level */
sum phat plb pub if outlook_gr_t0 == 2 & outlook_gr_t1 == 2 & male == 1 & age_gr == 2 & race == 1 & hispanic == 0 & edu_gr == 2 & year == 2020

/* destination = declining, all other var at the reference level */
sum phat plb pub if outlook_gr_t0 == 2 & outlook_gr_t1 == 3 & male == 1 & age_gr == 2 & race == 1 & hispanic == 0 & edu_gr == 2 & year == 2020


/* model 3b */
logit upward ib2.outlook_gr_t0##ib2.outlook_gr_t1           /*
*/	i.male ib2.age_gr ib1.race i.hispanic ib1.edu_gr ib1.year /* 
*/ if good == 1  

/* obtain predicted probability and confidence interval*/
drop phat xb error lb ub plb pub

predict phat

predict xb, xb

predict error, stdp

generate lb = xb - invnormal(0.975) * error

generate ub = xb + invnormal(0.975) * error

generate plb = invlogit(lb)

generate pub = invlogit(ub)

/* origin = growing, destination = growing, all other var at the reference level */
sum phat plb pub if outlook_gr_t0 == 1 & outlook_gr_t1 == 1 & male == 1 & age_gr == 2 & race == 1 & hispanic == 0 & edu_gr == 2 & year == 2020

/* origin = growing, destination = stable, all other var at the reference level */
sum phat plb pub if outlook_gr_t0 == 1 & outlook_gr_t1 == 2 & male == 1 & age_gr == 2 & race == 1 & hispanic == 0 & edu_gr == 2 & year == 2020

/* origin = growing, destination = declining, all other var at the reference level */
sum phat plb pub if outlook_gr_t0 == 1 & outlook_gr_t1 == 3 & male == 1 & age_gr == 2 & race == 1 & hispanic == 0 & edu_gr == 2 & year == 2020

/* origin = stable, destination = growing, all other var at the reference level */
sum phat plb pub if outlook_gr_t0 == 2 & outlook_gr_t1 == 1 & male == 1 & age_gr == 2 & race == 1 & hispanic == 0 & edu_gr == 2 & year == 2020

/* origin = stable, destination = stable, all other var at the reference level */
sum phat plb pub if outlook_gr_t0 == 2 & outlook_gr_t1 == 2 & male == 1 & age_gr == 2 & race == 1 & hispanic == 0 & edu_gr == 2 & year == 2020

/* origin = stable, destination = declining, all other var at the reference level */
sum phat plb pub if outlook_gr_t0 == 2 & outlook_gr_t1 == 3 & male == 1 & age_gr == 2 & race == 1 & hispanic == 0 & edu_gr == 2 & year == 2020


/* origin = declining, destination = growing, all other var at the reference level */
sum phat plb pub if outlook_gr_t0 == 3 & outlook_gr_t1 == 1 & male == 1 & age_gr == 2 & race == 1 & hispanic == 0 & edu_gr == 2 & year == 2020

/* origin = declining, destination = stable, all other var at the reference level */
sum phat plb pub if outlook_gr_t0 == 3 & outlook_gr_t1 == 2 & male == 1 & age_gr == 2 & race == 1 & hispanic == 0 & edu_gr == 2 & year == 2020

/* origin = declining, destination = declining, all other var at the reference level */
sum phat plb pub if outlook_gr_t0 == 3 & outlook_gr_t1 == 3 & male == 1 & age_gr == 2 & race == 1 & hispanic == 0 & edu_gr == 2 & year == 2020




log using "${logfile}/TableF4.log", replace

***********************************************************************************
* Descriptive Statistics of Upward Mobility Variables *
***********************************************************************************

use "${temp}/cps_2000-2020_wide_movers.dta", replace

* define the mobility variable based on dollar change

gen mobile = 1 if adj_annual_mean_t1 > (adj_annual_mean_t0 + 1000) & !missing(adj_annual_mean_t0) & !missing(adj_annual_mean_t1) & occ_t0 != occ_t1 /*upward*/

replace mobile = 0 if adj_annual_mean_t1 <= (adj_annual_mean_t0 - 1000) & !missing(adj_annual_mean_t0) & !missing(adj_annual_mean_t1) & occ_t0 != occ_t1 /*downward*/

replace mobile = 2 if adj_annual_mean_t1 >= (adj_annual_mean_t0 - 1000) & adj_annual_mean_t1 <= (adj_annual_mean_t0 + 1000) & !missing(adj_annual_mean_t0) & !missing(adj_annual_mean_t1) & occ_t0 != occ_t1 /*horizontal mobility*/


lab def mobile 0 "downward" 1 "upward" 2 "horizontal" 

lab val mobile mobile



* define the mobility variable based on percent change

gen xx = adj_annual_mean_t1/adj_annual_mean_t0

gen mobile2 = 1 if xx > 1.1 & !missing(adj_annual_mean_t0) & !missing(adj_annual_mean_t1) & occ_t0 != occ_t1 /*upward*/

replace mobile2 = 2 if inrange(xx, 0.9, 1.1) & !missing(adj_annual_mean_t0) & !missing(adj_annual_mean_t1) & occ_t0 != occ_t1 /*downward*/

replace mobile2 = 0 if xx < 0.9 & adj_annual_mean_t1 <= (adj_annual_mean_t0 + 1000) & !missing(adj_annual_mean_t0) & !missing(adj_annual_mean_t1) & occ_t0 != occ_t1 /*horizontal mobility*/


lab val mobile2 mobile 


* descriptive statistics

mark good if emp_chng_rate_t0 !=. & emp_chng_rate_t1 != . & /* 
*/ proj_pc_growth_t0 != . & proj_pc_growth_t1 != . & /*
*/ outlook_gr_t0 != .  & outlook_gr_t1 != .  & /*
*/ adj_annual_mean_t0 != . 

tab1 mobile mobile2 if good == 1

log close 



log using "${logfile}/TableF6.log", replace

****************************************************************************************************
* Descriptive Statistics of Mobility Between Growth Clusters, Unemployment, Out of the Labor Force *
****************************************************************************************************
use "${temp}/cps_2000-2020_wide_movers.dta", replace

* define outcomes

gen moveinto = outlook_gr_t1

replace moveinto = 4 if occ_t0 != 9999 & empstat == 2 /*unemployed*/

replace moveinto = 5 if occ_t0 != 9999 & empstat == 3 /*out of the labor force*/

lab def moveinto 1 "growing" 2 "stable" 3 "declining" 4 "unemployed" 5 "out of the labor force"

lab val moveinto moveinto


mark good if emp_chng_rate_t0 !=.  & /* 
*/ proj_pc_growth_t0 != .  & /*
*/ outlook_gr_t0 != .   & /*
*/ adj_annual_mean_t0 != . 

bys outlook_gr_t0: tab1 moveinto if good == 1

log close

****************************************************************************************************
* Correlations between Short-Term and Long-Term Occupational Growth Rate *
****************************************************************************************************

use "${temp}/oews_matrix_ooh2000-2020_ipums_occ.dta", replace

drop if emp_pc_growth > 400 /* drop outliers about 9% dropped*/

corr 


log using "${logfile}/TableF9.log", replace

****************************************************************************************************
* Discrete Choice Model Using Projected Job Openings (var: projjobopen_choice) as the Constraint *
* Adapt models from 10_analysis_2 Discrete Choice Models
****************************************************************************************************

use "${temp}/cps_2000-2020_choice_set_movers.dta", replace

* Generate choice variable

gen dest = (choice_occ == occ_t1)

* Generate size constraint variable

gen logopen_choice = log(projjobopen_choice)

* rescale growth variables in terms of 10 percent change

gen emp_pc_growth10_choice = emp_pc_growth_choice/10
gen proj_pc_growth10_choice = proj_pc_growth_choice/10


drop if emp_pc_growth_choice > 400 /* drop outliers*/

* Mark the analytical sample

mark good if emp_chng_rate_choice !=. & proj_pc_growth_choice !=. & outlook_gr_choice != . & outlook_gr_t0 != .



* m1: individual variables + 2-year employment change

gen lograte_choice = log(1+emp_chng_rate_choice)
gen lograte_t0 = log(1+emp_chng_rate_t0)

clogit dest emp_pc_growth10_choice                                   /*
*/	i.male##c.emp_pc_growth10_choice                                 /*
*/	ib2.age_gr##c.emp_pc_growth10_choice                             /*
*/	ib1.race##c.emp_pc_growth10_choice                               /*
*/	i.hispanic##c.emp_pc_growth10_choice                             /*
*/	ib1.edu_gr##c.emp_pc_growth10_choice                             /*
*/  ib1.year##c.emp_pc_growth10_choice                               /*
*/  if good == 1, group(personid) offset(logopen_choice) 


* m2: individual variables + 10-year projected growth

gen logprojrate_choice = log(1+proj_pc_growth_choice/100)
gen logprojrate_t0 = log(1+proj_pc_growth_t0/100)

clogit dest proj_pc_growth10_choice                               /*
*/	i.male##c.proj_pc_growth10_choice                             /*
*/	ib2.age_gr##c.proj_pc_growth10_choice                         /*
*/	ib1.race##c.proj_pc_growth10_choice                           /*
*/	i.hispanic##c.proj_pc_growth10_choice                         /*
*/	ib1.edu_gr##c.proj_pc_growth10_choice                         /*
*/  ib1.year##c.proj_pc_growth10_choice                           /*
*/  if good == 1, group(personid) offset(logopen_choice) 


* m3: individual variables + projected OOH outlook categories

* Generate destination outlook dummy variable
generate out1 = (outlook_gr_choice==1)
generate out3 = (outlook_gr_choice==3)

*Generate origin and destination outlook interaction dummy variable
generate origin1_1 = (outlook_gr_t0 == 1) * out1
generate origin1_3 = (outlook_gr_t0 == 1) * out3
generate origin3_1 = (outlook_gr_t0 == 3) * out1
generate origin3_3 = (outlook_gr_t0 == 3) * out3


clogit dest ib2.outlook_gr_choice                                 /*
*/	i.male##ib2.outlook_gr_choice                                 /*
*/	ib2.age_gr##ib2.outlook_gr_choice                             /*
*/	ib1.race##ib2.outlook_gr_choice                               /*
*/	i.hispanic##ib2.outlook_gr_choice                             /*
*/	ib1.edu_gr##ib2.outlook_gr_choice                             /*
*/  ib1.year##ib2.outlook_gr_choice                               /*
*/  if good == 1, group(personid) offset(logopen_choice) 


* m4:interactions between origin and destination outlook
clogit dest ib2.outlook_gr_choice                                 /*
*/  ib2.outlook_gr_t0##ib2.outlook_gr_choice                      /*
*/	i.male##ib2.outlook_gr_choice                                 /*
*/	ib2.age_gr##ib2.outlook_gr_choice                             /*
*/	ib1.race##ib2.outlook_gr_choice                               /*
*/	i.hispanic##ib2.outlook_gr_choice                             /*
*/	ib1.edu_gr##ib2.outlook_gr_choice                             /*
*/  ib1.year##ib2.outlook_gr_choice                               /*
*/  if good == 1, group(personid) offset(logopen_choice) 

lnmor ib2.outlook_gr_choice, or
lnmor outlook_gr_t0##ib2.outlook_gr_choice, or
lnmor ib2.outlook_gr_t0##ib2.outlook_gr_choice, or

/* test results without controls */

clogit dest ib2.outlook_gr_choice                                 /*
*/  if good == 1, group(personid) offset(logopen_choice) 

clogit dest ib2.outlook_gr_choice                                 /*
*/  if good == 1, group(personid) 


log close
